package com.lxb.myblog.controller.admin;


import com.lxb.myblog.po.User;
import com.lxb.myblog.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

import javax.servlet.http.HttpSession;

@Controller
@RequestMapping("/admin")
public class LoginController {

    @Autowired
    private UserService userService;

    /**
     * 调整登录页面
     *
     * @return 返回登录页面
     */
    @GetMapping()
    public String loginPage() {
        return "admin/login";
    }

    /**
     * 登录校验
     *
     * @param username   用户名
     * @param password   密码
     * @param session    session域
     * @param attributes 返回页面消息
     * @return 登录成功跳转登录成功页面，登录失败返回登录页面，并显示错误信息
     */
    @PostMapping("/login")
    public String login(@RequestParam String username, @RequestParam String password,
                        HttpSession session,
                        RedirectAttributes attributes) {
        User user = userService.checkUser(username, password);
        if (user != null) {
            // 用户存在
            // 加入到session域中,为防止在前面查看到user的密码，将user的的密码设为null。
            // 跳转到后台主页
            user.setPassword(null);
            session.setAttribute("user", user);
            return "admin/index";
        } else {
            // 用户不存在
            // 显示错误，并调整到登录页面
            attributes.addFlashAttribute("message", "用户名和密码错误");
            return "redirect:/admin";
        }
    }

    /**
     * 注销登录
     *
     * @param session
     * @return
     */
    @GetMapping("/logout")
    public String logout(HttpSession session) {
        session.removeAttribute("user");
        return "redirect:/admin";
    }
}
